/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.marlboroug.articlesbyauthors;

import com.marlboroug.entity.Articlesbyauthors;
import com.marlboroug.entity.Authors;
import java.util.List;
import javax.ejb.Remote;


@Remote
public interface ArticlesByAuthorsRemote {
    
    /** Permet de créer une relation entre un article et un auteur
     * 
     * @param articlesByAuthor Envoie d'un objet de type articlesByAuthor
     * @return Un boolean pour confirmer la création
     */
    boolean create (Articlesbyauthors articlesByAuthor);
    
    /** Permet de supprimer une relation entre un article et un auteur
     * 
     * @param ID_articles_by_authors Envoie un ID 
     * @return Un boolean pour confirmer la suppression
     */
    boolean delete (Long ID_articles_by_authors);
    
    /** Permet de renvoyer un objet articlesByAuthor en fonction d'un ID
     * 
     * @param ID_articles_by_authors Envoie un ID
     * @return Un objet articlesByAuthor
     */
    Articlesbyauthors find (Long ID_articles_by_authors);
    
    /** Permet de retourner une liste des relations entre un article et un auteur en fonction d'un auteur
     * 
     * @param ID_authors Un ID d'un auteur
     * @return Une liste d'objets de type articlesByAuthors
     */
    List<Articlesbyauthors> ArticlesFindAuthor (Long ID_authors);
    
    /** Permet de retourner un objet auteur en fonction d'un ID
     * 
     * @param ID_authors Un ID d'un auteur
     * @return Un objet auteur
     */
    Authors findAuthors (Long ID_authors);
    
    /** Permet de retourner une liste des 10 articles les plus vendus avec les auteurs, catégories et éditeurs associès
     * 
     * @return Une liste d'articles
     */
    List<Articlesbyauthors> findArticlesIndex ();
    
    /** Permet de retourner une liste d'articles avec les auteurs, catégories et éditeurs associès en fonction d'une categories
     * 
     * @param ID_categories Un ID d'une categorie
     * @return Une liste d'articles
     */
    List<Articlesbyauthors> ArticlesFindCategory (Long ID_categories);
    
    /** Permet de retourner une liste d'articles avec les auteurs, catégories et éditeurs associès en fonction d'un mot clés
     * 
     * @param keyWord Un mot clés
     * @return Une liste d'articles
     */
    List<Articlesbyauthors> ArticlesFindCategoryWithKeyWord (String keyWord);
    
    /** Permet de renvoyer une liste de l'ensemble des articles avec les auteurs, catégories et éditeurs associès
     * 
     * @return Une liste d'articles
     */
    List<Articlesbyauthors> ArticlesFindAll ();
}
